using System;
using ColMil.Acad.AccesoDatos.Entidades;

namespace ColMil.Acad.AccesoDatos.Contexto
{
   public class MyDBContext : Didsoft.DataAccess.EF.EFDBContext
   {
     
       public System.Data.Entity.DbSet<Area> Area { get; set; }
       public System.Data.Entity.DbSet<Asignatura> Asignatura { get; set; }
       public System.Data.Entity.DbSet<CalificacionEstudiante> CalificacionEstudiante { get; set; }
       public System.Data.Entity.DbSet<Docente> Docente { get; set; }
       public System.Data.Entity.DbSet<EspecialidadAcademica> EspecialidadAcademica { get; set; }
       public System.Data.Entity.DbSet<EspecialidadDocente> EspecialidadDocente { get; set; }
       public System.Data.Entity.DbSet<Estudiante> Estudiante { get; set; }
       public System.Data.Entity.DbSet<Evaluacion> Evaluacion { get; set; }
       public System.Data.Entity.DbSet<HistorialSesion> HistorialSesion { get; set; }
       public System.Data.Entity.DbSet<MatriculaEstudiante> MatriculaEstudiante { get; set; }
       public System.Data.Entity.DbSet<MatriculaEstudianteDetalle> MatriculaEstudianteDetalle { get; set; }
       public System.Data.Entity.DbSet<PeriodoAcademico> PeriodoAcademico { get; set; }
       public System.Data.Entity.DbSet<PeriodoPlanDocenteConfig> PeriodoPlanDocenteConfig { get; set; }
       public System.Data.Entity.DbSet<Persona> Persona { get; set; }
       public System.Data.Entity.DbSet<PlanAcadAsignatura> PlanAcadAsignatura { get; set; }
       public System.Data.Entity.DbSet<PlanAcademico> PlanAcademico { get; set; }
       public System.Data.Entity.DbSet<SesionUsuario> SesionUsuario { get; set; }
       public System.Data.Entity.DbSet<TipoEvaluacion> TipoEvaluacion { get; set; }
       public System.Data.Entity.DbSet<Usuario> Usuario { get; set; }
     
   protected override void OnModelCreating(System.Data.Entity.DbModelBuilder modelBuilder)
   {
       modelBuilder.Conventions.Remove<System.Data.Entity.ModelConfiguration.Conventions.PluralizingTableNameConvention>();


        #region definicion explicita modelo relacional Area
          modelBuilder.Entity<Area>().HasKey(p => p.Id);
          modelBuilder.Entity<Area>().Property(p => p.Id).HasColumnName("AreaId");
        #endregion


        #region definicion explicita modelo relacional Asignatura
          modelBuilder.Entity<Asignatura>().HasKey(p => p.Id);
          modelBuilder.Entity<Asignatura>().Property(p => p.Id).HasColumnName("AsignaturaId");
        #endregion


        #region definicion explicita modelo relacional CalificacionEstudiante
          modelBuilder.Entity<CalificacionEstudiante>().HasOptional(p => p.Evaluacion).WithMany().Map(x => x.MapKey("EvaluacionId"));
          modelBuilder.Entity<CalificacionEstudiante>().HasOptional(p => p.MatriculaDetalleConfig).WithMany().Map(x => x.MapKey("MatriculaDetalleConfigId"));
          modelBuilder.Entity<CalificacionEstudiante>().HasKey(p => p.Id);
          modelBuilder.Entity<CalificacionEstudiante>().Property(p => p.Id).HasColumnName("CalificacionEstudianteId");
        #endregion


        #region definicion explicita modelo relacional Docente
        #endregion


        #region definicion explicita modelo relacional EspecialidadAcademica
          modelBuilder.Entity<EspecialidadAcademica>().HasKey(p => p.Id);
          modelBuilder.Entity<EspecialidadAcademica>().Property(p => p.Id).HasColumnName("EspecialidadAcadId");
        #endregion


        #region definicion explicita modelo relacional EspecialidadDocente
          modelBuilder.Entity<EspecialidadDocente>().HasOptional(p => p.Docente).WithMany().Map(x => x.MapKey("DocenteId"));
          modelBuilder.Entity<EspecialidadDocente>().HasOptional(p => p.EspecialidadAcad).WithMany().Map(x => x.MapKey("EspecialidadAcadId"));
        #endregion


        #region definicion explicita modelo relacional Estudiante
        #endregion


        #region definicion explicita modelo relacional Evaluacion
          modelBuilder.Entity<Evaluacion>().HasOptional(p => p.DocentePeriodoPlan).WithMany().Map(x => x.MapKey("DocentePeriodoPlanId"));
          modelBuilder.Entity<Evaluacion>().HasOptional(p => p.TipoEvaluacion).WithMany().Map(x => x.MapKey("TipoEvaluacionId"));
          modelBuilder.Entity<Evaluacion>().HasKey(p => p.Id);
          modelBuilder.Entity<Evaluacion>().Property(p => p.Id).HasColumnName("EvaluacionId");
        #endregion


        #region definicion explicita modelo relacional HistorialSesion
          modelBuilder.Entity<HistorialSesion>().HasOptional(p => p.SesionUsuario).WithMany().Map(x => x.MapKey("SesionUsuarioId"));
        #endregion


        #region definicion explicita modelo relacional MatriculaEstudiante
          modelBuilder.Entity<MatriculaEstudiante>().HasOptional(p => p.Estudiante).WithMany().Map(x => x.MapKey("EstudianteId"));
          modelBuilder.Entity<MatriculaEstudiante>().HasOptional(p => p.PeriodoAcademico).WithMany().Map(x => x.MapKey("PeriodoAcademicoId"));
          modelBuilder.Entity<MatriculaEstudiante>().HasKey(p => p.Id);
          modelBuilder.Entity<MatriculaEstudiante>().Property(p => p.Id).HasColumnName("MatriculaId");
        #endregion


        #region definicion explicita modelo relacional MatriculaEstudianteDetalle
          modelBuilder.Entity<MatriculaEstudianteDetalle>().HasOptional(p => p.Matricula).WithMany().Map(x => x.MapKey("MatriculaId"));
          modelBuilder.Entity<MatriculaEstudianteDetalle>().HasOptional(p => p.DocentePeriodoPlan).WithMany().Map(x => x.MapKey("DocentePeriodoPlanId"));
          modelBuilder.Entity<MatriculaEstudianteDetalle>().HasKey(p => p.Id);
          modelBuilder.Entity<MatriculaEstudianteDetalle>().Property(p => p.Id).HasColumnName("MatriculaDetalleConfigId");
        #endregion


        #region definicion explicita modelo relacional PeriodoAcademico
          modelBuilder.Entity<PeriodoAcademico>().HasKey(p => p.Id);
          modelBuilder.Entity<PeriodoAcademico>().Property(p => p.Id).HasColumnName("PeriodoAcademicoId");
        #endregion


        #region definicion explicita modelo relacional PeriodoPlanDocenteConfig
          modelBuilder.Entity<PeriodoPlanDocenteConfig>().HasOptional(p => p.Docente).WithMany().Map(x => x.MapKey("DocenteId"));
          modelBuilder.Entity<PeriodoPlanDocenteConfig>().HasOptional(p => p.PeriodoAcademico).WithMany().Map(x => x.MapKey("PeriodoAcademicoId"));
          modelBuilder.Entity<PeriodoPlanDocenteConfig>().HasOptional(p => p.PlanAsignatura).WithMany().Map(x => x.MapKey("PlanAsignaturaId"));
          modelBuilder.Entity<PeriodoPlanDocenteConfig>().HasKey(p => p.Id);
          modelBuilder.Entity<PeriodoPlanDocenteConfig>().Property(p => p.Id).HasColumnName("DocentePeriodoPlanId");
        #endregion


        #region definicion explicita modelo relacional Persona
          modelBuilder.Entity<Persona>().HasKey(p => p.Id);
          modelBuilder.Entity<Persona>().Property(p => p.Id).HasColumnName("PersonaId");
        #endregion


        #region definicion explicita modelo relacional PlanAcadAsignatura
          modelBuilder.Entity<PlanAcadAsignatura>().HasOptional(p => p.Area).WithMany().Map(x => x.MapKey("AreaId"));
          modelBuilder.Entity<PlanAcadAsignatura>().HasOptional(p => p.Asignatura).WithMany().Map(x => x.MapKey("AsignaturaId"));
          modelBuilder.Entity<PlanAcadAsignatura>().HasOptional(p => p.PlanAcademico).WithMany().Map(x => x.MapKey("PlanAcademicoId"));
          modelBuilder.Entity<PlanAcadAsignatura>().HasKey(p => p.Id);
          modelBuilder.Entity<PlanAcadAsignatura>().Property(p => p.Id).HasColumnName("PlanAsignaturaId");
        #endregion


        #region definicion explicita modelo relacional PlanAcademico
          modelBuilder.Entity<PlanAcademico>().HasKey(p => p.Id);
          modelBuilder.Entity<PlanAcademico>().Property(p => p.Id).HasColumnName("PlanAcademicoId");
        #endregion


        #region definicion explicita modelo relacional SesionUsuario
          modelBuilder.Entity<SesionUsuario>().HasOptional(p => p.Usuario).WithMany().Map(x => x.MapKey("UsuarioId"));
          modelBuilder.Entity<SesionUsuario>().HasKey(p => p.Id);
          modelBuilder.Entity<SesionUsuario>().Property(p => p.Id).HasColumnName("SesionUsuarioId");
        #endregion


        #region definicion explicita modelo relacional TipoEvaluacion
        #endregion


        #region definicion explicita modelo relacional Usuario
          modelBuilder.Entity<Usuario>().HasOptional(p => p.Persona).WithMany().Map(x => x.MapKey("PersonaId"));
          modelBuilder.Entity<Usuario>().HasKey(p => p.Id);
          modelBuilder.Entity<Usuario>().Property(p => p.Id).HasColumnName("UsuarioId");
        #endregion

   }
     
   }
}

